var runtime.sched

390 uses

	runtime (current package)
		cgocall.go#L296: 	hz := sched.profilehz
		debug.go#L21: 	lock(&sched.lock)
		debug.go#L23: 	unlock(&sched.lock)
		debugcall.go#L226: 		lock(&sched.lock)
		debugcall.go#L228: 		unlock(&sched.lock)
		metrics.go#L286: 				hist.counts[0] = atomic.Load64(&sched.timeToRun.underflow)
		metrics.go#L287: 				for i := range sched.timeToRun.counts {
		metrics.go#L288: 					hist.counts[i+1] = atomic.Load64(&sched.timeToRun.counts[i])
		mgc.go#L1006: 	totalCpu := sched.totaltime + (now-sched.procresizetime)*int64(gomaxprocs)
		mgc.go#L1284: 						lock(&sched.lock)
		mgc.go#L1286: 						unlock(&sched.lock)
		mgc.go#L1555: 	lock(&sched.sudoglock)
		mgc.go#L1557: 	for sg = sched.sudogcache; sg != nil; sg = sgnext {
		mgc.go#L1561: 	sched.sudogcache = nil
		mgc.go#L1562: 	unlock(&sched.sudoglock)
		mgc.go#L1566: 	lock(&sched.deferlock)
		mgc.go#L1570: 	for d = sched.deferpool; d != nil; d = dlink {
		mgc.go#L1574: 	sched.deferpool = nil
		mgc.go#L1575: 	unlock(&sched.deferlock)
		mgcmark.go#L298: 	lock(&sched.gFree.lock)
		mgcmark.go#L299: 	list := sched.gFree.stack
		mgcmark.go#L300: 	sched.gFree.stack = gList{}
		mgcmark.go#L301: 	unlock(&sched.gFree.lock)
		mgcmark.go#L318: 	lock(&sched.gFree.lock)
		mgcmark.go#L319: 	sched.gFree.noStack.pushAll(q)
		mgcmark.go#L320: 	unlock(&sched.gFree.lock)
		mgcmark.go#L1042: 		for !(gp.preempt && (preemptible || atomic.Load(&sched.gcwaiting) != 0)) {
		mgcmark.go#L1056: 	for !(gp.preempt && (preemptible || atomic.Load(&sched.gcwaiting) != 0)) {
		panic.go#L313: 	if len(pp.deferpool) == 0 && sched.deferpool != nil {
		panic.go#L314: 		lock(&sched.deferlock)
		panic.go#L315: 		for len(pp.deferpool) < cap(pp.deferpool)/2 && sched.deferpool != nil {
		panic.go#L316: 			d := sched.deferpool
		panic.go#L317: 			sched.deferpool = d.link
		panic.go#L321: 		unlock(&sched.deferlock)
		panic.go#L379: 		lock(&sched.deferlock)
		panic.go#L380: 		last.link = sched.deferpool
		panic.go#L381: 		sched.deferpool = first
		panic.go#L382: 		unlock(&sched.deferlock)
		proc.go#L389: 		lock(&sched.sudoglock)
		proc.go#L391: 		for len(pp.sudogcache) < cap(pp.sudogcache)/2 && sched.sudogcache != nil {
		proc.go#L392: 			s := sched.sudogcache
		proc.go#L393: 			sched.sudogcache = s.next
		proc.go#L397: 		unlock(&sched.sudoglock)
		proc.go#L455: 		lock(&sched.sudoglock)
		proc.go#L456: 		last.next = sched.sudogcache
		proc.go#L457: 		sched.sudogcache = first
		proc.go#L458: 		unlock(&sched.sudoglock)
		proc.go#L657: 	lockInit(&sched.lock, lockRankSched)
		proc.go#L658: 	lockInit(&sched.sysmonlock, lockRankSysmon)
		proc.go#L659: 	lockInit(&sched.deferlock, lockRankDefer)
		proc.go#L660: 	lockInit(&sched.sudoglock, lockRankSudog)
		proc.go#L684: 	sched.maxmcount = 10000
		proc.go#L704: 	if offset := unsafe.Offsetof(sched.timeToRun); offset%8 != 0 {
		proc.go#L714: 	lock(&sched.lock)
		proc.go#L715: 	sched.lastpoll = uint64(nanotime())
		proc.go#L723: 	unlock(&sched.lock)
		proc.go#L759: 	assertLockHeld(&sched.lock)
		proc.go#L761: 	if mcount() > sched.maxmcount {
		proc.go#L762: 		print("runtime: program exceeds ", sched.maxmcount, "-thread limit\n")
		proc.go#L772: 	assertLockHeld(&sched.lock)
		proc.go#L774: 	if sched.mnext+1 < sched.mnext {
		proc.go#L777: 	id := sched.mnext
		proc.go#L778: 	sched.mnext++
		proc.go#L792: 	lock(&sched.lock)
		proc.go#L825: 	unlock(&sched.lock)
		proc.go#L881: 		sched.stopwait = freezeStopWait
		proc.go#L882: 		atomic.Store(&sched.gcwaiting, 1)
		proc.go#L1020: 			sched.timeToRun.record(gp.runnableTime)
		proc.go#L1183: 	lock(&sched.lock)
		proc.go#L1184: 	sched.stopwait = gomaxprocs
		proc.go#L1185: 	atomic.Store(&sched.gcwaiting, 1)
		proc.go#L1189: 	sched.stopwait--
		proc.go#L1199: 			sched.stopwait--
		proc.go#L1209: 		sched.stopwait--
		proc.go#L1211: 	wait := sched.stopwait > 0
		proc.go#L1212: 	unlock(&sched.lock)
		proc.go#L1218: 			if notetsleep(&sched.stopnote, 100*1000) {
		proc.go#L1219: 				noteclear(&sched.stopnote)
		proc.go#L1228: 	if sched.stopwait != 0 {
		proc.go#L1260: 	lock(&sched.lock)
		proc.go#L1268: 	sched.gcwaiting = 0
		proc.go#L1269: 	if sched.sysmonwait != 0 {
		proc.go#L1270: 		sched.sysmonwait = 0
		proc.go#L1271: 		notewakeup(&sched.sysmonnote)
		proc.go#L1273: 	unlock(&sched.lock)
		proc.go#L1480: 		lock(&sched.lock)
		proc.go#L1481: 		sched.nmfreed++
		proc.go#L1483: 		unlock(&sched.lock)
		proc.go#L1502: 	lock(&sched.lock)
		proc.go#L1521: 		m.freelink = sched.freem
		proc.go#L1522: 		sched.freem = m
		proc.go#L1524: 	unlock(&sched.lock)
		proc.go#L1535: 	lock(&sched.lock)
		proc.go#L1536: 	sched.nmfreed++
		proc.go#L1538: 	unlock(&sched.lock)
		proc.go#L1580: 	lock(&sched.lock)
		proc.go#L1581: 	if sched.safePointWait != 0 {
		proc.go#L1584: 	sched.safePointWait = gomaxprocs - 1
		proc.go#L1585: 	sched.safePointFn = fn
		proc.go#L1601: 	for p := sched.pidle.ptr(); p != nil; p = p.link.ptr() {
		proc.go#L1604: 			sched.safePointWait--
		proc.go#L1608: 	wait := sched.safePointWait > 0
		proc.go#L1609: 	unlock(&sched.lock)
		proc.go#L1635: 			if notetsleep(&sched.safePointNote, 100*1000) {
		proc.go#L1636: 				noteclear(&sched.safePointNote)
		proc.go#L1642: 	if sched.safePointWait != 0 {
		proc.go#L1651: 	lock(&sched.lock)
		proc.go#L1652: 	sched.safePointFn = nil
		proc.go#L1653: 	unlock(&sched.lock)
		proc.go#L1676: 	sched.safePointFn(p)
		proc.go#L1677: 	lock(&sched.lock)
		proc.go#L1678: 	sched.safePointWait--
		proc.go#L1679: 	if sched.safePointWait == 0 {
		proc.go#L1680: 		notewakeup(&sched.safePointNote)
		proc.go#L1682: 	unlock(&sched.lock)
		proc.go#L1720: 	if sched.freem != nil {
		proc.go#L1721: 		lock(&sched.lock)
		proc.go#L1723: 		for freem := sched.freem; freem != nil; {
		proc.go#L1739: 		sched.freem = newList
		proc.go#L1740: 		unlock(&sched.lock)
		proc.go#L1864: 	atomic.Xadd(&sched.ngsys, -1)
		proc.go#L1915: 	gp.goid = int64(atomic.Xadd64(&sched.goidgen, 1))
		proc.go#L1926: 	atomic.Xadd(&sched.ngsys, +1)
		proc.go#L1967: 	atomic.Xadd(&sched.ngsys, +1)
		proc.go#L2184: 	lock(&sched.lock)
		proc.go#L2185: 	sched.nmsys++
		proc.go#L2187: 	unlock(&sched.lock)
		proc.go#L2225: 	lock(&sched.lock)
		proc.go#L2227: 	unlock(&sched.lock)
		proc.go#L2267: 	lock(&sched.lock)
		proc.go#L2271: 			unlock(&sched.lock)
		proc.go#L2275: 				if int32(atomic.Xadd(&sched.nmspinning, -1)) < 0 {
		proc.go#L2298: 		unlock(&sched.lock)
		proc.go#L2311: 	unlock(&sched.lock)
		proc.go#L2338: 	if !runqempty(_p_) || sched.runqsize != 0 {
		proc.go#L2349: 	if atomic.Load(&sched.nmspinning)+atomic.Load(&sched.npidle) == 0 && atomic.Cas(&sched.nmspinning, 0, 1) { // TODO: fast atomic
		proc.go#L2353: 	lock(&sched.lock)
		proc.go#L2354: 	if sched.gcwaiting != 0 {
		proc.go#L2356: 		sched.stopwait--
		proc.go#L2357: 		if sched.stopwait == 0 {
		proc.go#L2358: 			notewakeup(&sched.stopnote)
		proc.go#L2360: 		unlock(&sched.lock)
		proc.go#L2364: 		sched.safePointFn(_p_)
		proc.go#L2365: 		sched.safePointWait--
		proc.go#L2366: 		if sched.safePointWait == 0 {
		proc.go#L2367: 			notewakeup(&sched.safePointNote)
		proc.go#L2370: 	if sched.runqsize != 0 {
		proc.go#L2371: 		unlock(&sched.lock)
		proc.go#L2377: 	if sched.npidle == uint32(gomaxprocs-1) && atomic.Load64(&sched.lastpoll) != 0 {
		proc.go#L2378: 		unlock(&sched.lock)
		proc.go#L2387: 	unlock(&sched.lock)
		proc.go#L2397: 	if atomic.Load(&sched.npidle) == 0 {
		proc.go#L2401: 	if atomic.Load(&sched.nmspinning) != 0 || !atomic.Cas(&sched.nmspinning, 0, 1) {
		proc.go#L2459: 	if sched.gcwaiting == 0 {
		proc.go#L2466: 		if int32(atomic.Xadd(&sched.nmspinning, -1)) < 0 {
		proc.go#L2471: 	lock(&sched.lock)
		proc.go#L2473: 	sched.stopwait--
		proc.go#L2474: 	if sched.stopwait == 0 {
		proc.go#L2475: 		notewakeup(&sched.stopnote)
		proc.go#L2477: 	unlock(&sched.lock)
		proc.go#L2506: 	hz := sched.profilehz
		proc.go#L2534: 	if sched.gcwaiting != 0 {
		proc.go#L2559: 	if sched.runqsize != 0 {
		proc.go#L2560: 		lock(&sched.lock)
		proc.go#L2562: 		unlock(&sched.lock)
		proc.go#L2575: 	if netpollinited() && atomic.Load(&netpollWaiters) > 0 && atomic.Load64(&sched.lastpoll) != 0 {
		proc.go#L2593: 	if _g_.m.spinning || 2*atomic.Load(&sched.nmspinning) < procs-atomic.Load(&sched.npidle) {
		proc.go#L2596: 			atomic.Xadd(&sched.nmspinning, 1)
		proc.go#L2661: 	lock(&sched.lock)
		proc.go#L2662: 	if sched.gcwaiting != 0 || _p_.runSafePointFn != 0 {
		proc.go#L2663: 		unlock(&sched.lock)
		proc.go#L2666: 	if sched.runqsize != 0 {
		proc.go#L2668: 		unlock(&sched.lock)
		proc.go#L2675: 	unlock(&sched.lock)
		proc.go#L2700: 		if int32(atomic.Xadd(&sched.nmspinning, -1)) < 0 {
		proc.go#L2715: 			atomic.Xadd(&sched.nmspinning, 1)
		proc.go#L2724: 			atomic.Xadd(&sched.nmspinning, 1)
		proc.go#L2745: 	if netpollinited() && (atomic.Load(&netpollWaiters) > 0 || pollUntil != 0) && atomic.Xchg64(&sched.lastpoll, 0) != 0 {
		proc.go#L2746: 		atomic.Store64(&sched.pollUntil, uint64(pollUntil))
		proc.go#L2768: 		atomic.Store64(&sched.pollUntil, 0)
		proc.go#L2769: 		atomic.Store64(&sched.lastpoll, uint64(nanotime()))
		proc.go#L2776: 		lock(&sched.lock)
		proc.go#L2778: 		unlock(&sched.lock)
		proc.go#L2794: 				atomic.Xadd(&sched.nmspinning, 1)
		proc.go#L2799: 		pollerPollUntil := int64(atomic.Load64(&sched.pollUntil))
		proc.go#L2813: 	if sched.runqsize != 0 {
		proc.go#L2820: 	if netpollinited() && atomic.Load(&netpollWaiters) > 0 && sched.lastpoll != 0 {
		proc.go#L2845: 			if sched.gcwaiting != 0 {
		proc.go#L2912: 			lock(&sched.lock)
		proc.go#L2914: 			unlock(&sched.lock)
		proc.go#L2974: 	lock(&sched.lock)
		proc.go#L2977: 		unlock(&sched.lock)
		proc.go#L2985: 		unlock(&sched.lock)
		proc.go#L2992: 		unlock(&sched.lock)
		proc.go#L2996: 	unlock(&sched.lock)
		proc.go#L3005: 	if atomic.Load64(&sched.lastpoll) == 0 {
		proc.go#L3010: 		pollerPollUntil := int64(atomic.Load64(&sched.pollUntil))
		proc.go#L3029: 	nmspinning := atomic.Xadd(&sched.nmspinning, -1)
		proc.go#L3075: 		for ; n != 0 && sched.npidle != 0; n-- {
		proc.go#L3082: 		lock(&sched.lock)
		proc.go#L3084: 		unlock(&sched.lock)
		proc.go#L3089: 	npidle := int(atomic.Load(&sched.npidle))
		proc.go#L3097: 		lock(&sched.lock)
		proc.go#L3099: 		unlock(&sched.lock)
		proc.go#L3133: 	if sched.gcwaiting != 0 {
		proc.go#L3175: 		if _g_.m.p.ptr().schedtick%61 == 0 && sched.runqsize > 0 {
		proc.go#L3176: 			lock(&sched.lock)
		proc.go#L3178: 			unlock(&sched.lock)
		proc.go#L3197: 	if sched.disable.user && !schedEnabled(gp) {
		proc.go#L3201: 		lock(&sched.lock)
		proc.go#L3205: 			unlock(&sched.lock)
		proc.go#L3207: 			sched.disable.runnable.pushBack(gp)
		proc.go#L3208: 			sched.disable.n++
		proc.go#L3209: 			unlock(&sched.lock)
		proc.go#L3347: 	lock(&sched.lock)
		proc.go#L3349: 	unlock(&sched.lock)
		proc.go#L3460: 		atomic.Xadd(&sched.ngsys, -1)
		proc.go#L3619: 	if atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L3637: 	if sched.gcwaiting != 0 {
		proc.go#L3656: 	lock(&sched.lock)
		proc.go#L3657: 	if atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L3658: 		atomic.Store(&sched.sysmonwait, 0)
		proc.go#L3659: 		notewakeup(&sched.sysmonnote)
		proc.go#L3661: 	unlock(&sched.lock)
		proc.go#L3668: 	lock(&sched.lock)
		proc.go#L3669: 	if sched.stopwait > 0 && atomic.Cas(&_p_.status, _Psyscall, _Pgcstop) {
		proc.go#L3675: 		if sched.stopwait--; sched.stopwait == 0 {
		proc.go#L3676: 			notewakeup(&sched.stopnote)
		proc.go#L3679: 	unlock(&sched.lock)
		proc.go#L3780: 		if sched.disable.user && !schedEnabled(_g_) {
		proc.go#L3823: 	if sched.stopwait == freezeStopWait {
		proc.go#L3836: 	if sched.pidle != 0 {
		proc.go#L3882: 	lock(&sched.lock)
		proc.go#L3884: 	if _p_ != nil && atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L3885: 		atomic.Store(&sched.sysmonwait, 0)
		proc.go#L3886: 		notewakeup(&sched.sysmonnote)
		proc.go#L3888: 	unlock(&sched.lock)
		proc.go#L3905: 	lock(&sched.lock)
		proc.go#L3920: 	} else if atomic.Load(&sched.sysmonwait) != 0 {
		proc.go#L3921: 		atomic.Store(&sched.sysmonwait, 0)
		proc.go#L3922: 		notewakeup(&sched.sysmonnote)
		proc.go#L3924: 	unlock(&sched.lock)
		proc.go#L4115: 		atomic.Xadd(&sched.ngsys, +1)
		proc.go#L4134: 		_p_.goidcache = atomic.Xadd64(&sched.goidgen, _GoidCacheBatch)
		proc.go#L4220: 		lock(&sched.gFree.lock)
		proc.go#L4221: 		sched.gFree.noStack.pushAll(noStackQ)
		proc.go#L4222: 		sched.gFree.stack.pushAll(stackQ)
		proc.go#L4223: 		sched.gFree.n += inc
		proc.go#L4224: 		unlock(&sched.gFree.lock)
		proc.go#L4232: 	if _p_.gFree.empty() && (!sched.gFree.stack.empty() || !sched.gFree.noStack.empty()) {
		proc.go#L4233: 		lock(&sched.gFree.lock)
		proc.go#L4237: 			gp := sched.gFree.stack.pop()
		proc.go#L4239: 				gp = sched.gFree.noStack.pop()
		proc.go#L4244: 			sched.gFree.n--
		proc.go#L4248: 		unlock(&sched.gFree.lock)
		proc.go#L4293: 	lock(&sched.gFree.lock)
		proc.go#L4294: 	sched.gFree.noStack.pushAll(noStackQ)
		proc.go#L4295: 	sched.gFree.stack.pushAll(stackQ)
		proc.go#L4296: 	sched.gFree.n += inc
		proc.go#L4297: 	unlock(&sched.gFree.lock)
		proc.go#L4410: 	n := int32(atomic.Loaduintptr(&allglen)) - sched.gFree.n - int32(atomic.Load(&sched.ngsys))
		proc.go#L4424: 	return int32(sched.mnext - sched.nmfreed)
		proc.go#L4580: 	lock(&sched.lock)
		proc.go#L4581: 	sched.profilehz = hz
		proc.go#L4582: 	unlock(&sched.lock)
		proc.go#L4634: 	assertLockHeld(&sched.lock)
		proc.go#L4724: 	assertLockHeld(&sched.lock)
		proc.go#L4737: 	if sched.procresizetime != 0 {
		proc.go#L4738: 		sched.totaltime += int64(old) * (now - sched.procresizetime)
		proc.go#L4740: 	sched.procresizetime = now
		proc.go#L4924: 	lock(&sched.lock)
		proc.go#L4925: 	sched.nmidlelocked += v
		proc.go#L4929: 	unlock(&sched.lock)
		proc.go#L4936: 	assertLockHeld(&sched.lock)
		proc.go#L4967: 	run := mcount() - sched.nmidle - sched.nmidlelocked - sched.nmsys
		proc.go#L4972: 		print("runtime: checkdead: nmidle=", sched.nmidle, " nmidlelocked=", sched.nmidlelocked, " mcount=", mcount(), " nmsys=", sched.nmsys, "\n")
		proc.go#L4994: 		unlock(&sched.lock) // unlock so that GODEBUG=scheddetail=1 doesn't hang
		proc.go#L5003: 			for pp := &sched.pidle; *pp != 0; pp = &(*pp).ptr().link {
		proc.go#L5029: 	unlock(&sched.lock)    // unlock so that GODEBUG=scheddetail=1 doesn't hang
		proc.go#L5048: 	lock(&sched.lock)
		proc.go#L5049: 	sched.nmsys++
		proc.go#L5051: 	unlock(&sched.lock)
		proc.go#L5084: 		if debug.schedtrace <= 0 && (sched.gcwaiting != 0 || atomic.Load(&sched.npidle) == uint32(gomaxprocs)) {
		proc.go#L5085: 			lock(&sched.lock)
		proc.go#L5086: 			if atomic.Load(&sched.gcwaiting) != 0 || atomic.Load(&sched.npidle) == uint32(gomaxprocs) {
		proc.go#L5090: 					atomic.Store(&sched.sysmonwait, 1)
		proc.go#L5091: 					unlock(&sched.lock)
		proc.go#L5102: 					syscallWake = notetsleep(&sched.sysmonnote, sleep)
		proc.go#L5106: 					lock(&sched.lock)
		proc.go#L5107: 					atomic.Store(&sched.sysmonwait, 0)
		proc.go#L5108: 					noteclear(&sched.sysmonnote)
		proc.go#L5115: 			unlock(&sched.lock)
		proc.go#L5118: 		lock(&sched.sysmonlock)
		proc.go#L5128: 		lastpoll := int64(atomic.Load64(&sched.lastpoll))
		proc.go#L5130: 			atomic.Cas64(&sched.lastpoll, uint64(lastpoll), uint64(now))
		proc.go#L5189: 		unlock(&sched.sysmonlock)
		proc.go#L5246: 			if runqempty(_p_) && atomic.Load(&sched.nmspinning)+atomic.Load(&sched.npidle) > 0 && pd.syscallwhen+10*1000*1000 > now {
		proc.go#L5336: 	lock(&sched.lock)
		proc.go#L5337: 	print("SCHED ", (now-starttime)/1e6, "ms: gomaxprocs=", gomaxprocs, " idleprocs=", sched.npidle, " threads=", mcount(), " spinningthreads=", sched.nmspinning, " idlethreads=", sched.nmidle, " runqueue=", sched.runqsize)
		proc.go#L5339: 		print(" gcwaiting=", sched.gcwaiting, " nmidlelocked=", sched.nmidlelocked, " stopwait=", sched.stopwait, " sysmonwait=", sched.sysmonwait, "\n")
		proc.go#L5369: 		unlock(&sched.lock)
		proc.go#L5405: 	unlock(&sched.lock)
		proc.go#L5414: 	lock(&sched.lock)
		proc.go#L5415: 	if sched.disable.user == !enable {
		proc.go#L5416: 		unlock(&sched.lock)
		proc.go#L5419: 	sched.disable.user = !enable
		proc.go#L5421: 		n := sched.disable.n
		proc.go#L5422: 		sched.disable.n = 0
		proc.go#L5423: 		globrunqputbatch(&sched.disable.runnable, n)
		proc.go#L5424: 		unlock(&sched.lock)
		proc.go#L5425: 		for ; n != 0 && sched.npidle != 0; n-- {
		proc.go#L5429: 		unlock(&sched.lock)
		proc.go#L5438: 	assertLockHeld(&sched.lock)
		proc.go#L5440: 	if sched.disable.user {
		proc.go#L5451: 	assertLockHeld(&sched.lock)
		proc.go#L5453: 	mp.schedlink = sched.midle
		proc.go#L5454: 	sched.midle.set(mp)
		proc.go#L5455: 	sched.nmidle++
		proc.go#L5464: 	assertLockHeld(&sched.lock)
		proc.go#L5466: 	mp := sched.midle.ptr()
		proc.go#L5468: 		sched.midle = mp.schedlink
		proc.go#L5469: 		sched.nmidle--
		proc.go#L5479: 	assertLockHeld(&sched.lock)
		proc.go#L5481: 	sched.runq.pushBack(gp)
		proc.go#L5482: 	sched.runqsize++
		proc.go#L5490: 	assertLockHeld(&sched.lock)
		proc.go#L5492: 	sched.runq.push(gp)
		proc.go#L5493: 	sched.runqsize++
		proc.go#L5502: 	assertLockHeld(&sched.lock)
		proc.go#L5504: 	sched.runq.pushBackAll(*batch)
		proc.go#L5505: 	sched.runqsize += n
		proc.go#L5512: 	assertLockHeld(&sched.lock)
		proc.go#L5514: 	if sched.runqsize == 0 {
		proc.go#L5518: 	n := sched.runqsize/gomaxprocs + 1
		proc.go#L5519: 	if n > sched.runqsize {
		proc.go#L5520: 		n = sched.runqsize
		proc.go#L5529: 	sched.runqsize -= n
		proc.go#L5531: 	gp := sched.runq.pop()
		proc.go#L5534: 		gp1 := sched.runq.pop()
		proc.go#L5614: 	assertLockHeld(&sched.lock)
		proc.go#L5621: 	_p_.link = sched.pidle
		proc.go#L5622: 	sched.pidle.set(_p_)
		proc.go#L5623: 	atomic.Xadd(&sched.npidle, 1) // TODO: fast atomic
		proc.go#L5633: 	assertLockHeld(&sched.lock)
		proc.go#L5635: 	_p_ := sched.pidle.ptr()
		proc.go#L5640: 		sched.pidle = _p_.link
		proc.go#L5641: 		atomic.Xadd(&sched.npidle, -1) // TODO: fast atomic
		proc.go#L5747: 	lock(&sched.lock)
		proc.go#L5749: 	unlock(&sched.lock)
		proc.go#L5781: 		lock(&sched.lock)
		proc.go#L5783: 		unlock(&sched.lock)
		proc.go#L6034: 	lock(&sched.lock)
		proc.go#L6035: 	out = int(sched.maxmcount)
		proc.go#L6037: 		sched.maxmcount = 0x7fffffff
		proc.go#L6039: 		sched.maxmcount = int32(in)
		proc.go#L6042: 	unlock(&sched.lock)
		proc.go#L6094: 	if i >= active_spin || ncpu <= 1 || gomaxprocs <= int32(sched.npidle+sched.nmspinning)+1 {
		runtime2.go#L1086: 	sched      schedt
		trace.go#L193: 	lock(&sched.sysmonlock)
		trace.go#L204: 		unlock(&sched.sysmonlock)
		trace.go#L277: 	unlock(&sched.sysmonlock)
		trace.go#L291: 	lock(&sched.sysmonlock)
		trace.go#L298: 		unlock(&sched.sysmonlock)
		trace.go#L336: 	unlock(&sched.sysmonlock)